#include <iostream>
#include <vector>
#include <string>
#include <queue>
#include <unordered_map>
// 合并两个有序链表：https://leetcode.cn/problems/merge-two-sorted-lists/description/
using namespace std;
class Solution {
public:
    ListNode* dfs(ListNode* l1,ListNode* l2)
    {
        if(l1==nullptr) return l2;
        if(l2==nullptr) return l1;
        if(l1->val<=l2->val)
        {
            l1->next=dfs(l1->next,l2);
            return l1;
        }
        else
        {
            l2->next=dfs(l1,l2->next);
            return l2;
        }
    }
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        return dfs(list1,list2);
    }
};